//app.js

//para ver la base de dato en mongo teclar:
//mongo
//use mongoapp
//db.clientes.find()

var gestion = function(myJSON) { //defino mi modulo
var dburl = 'localhost/mongoapp';
var collection = ['clientes'];
var db = require('mongojs').connect(dburl, collection );

	//objecto cliente
	function cliente(nombre, id, direccion, estado, intervalo, nuevo){
		this.nombre = nombre;
	  	this.id = id;
	  	this.direccion = direccion;
	  	this.estado = estado;
	  	this.intervalo = intervalo; 
		this.nuevo = nuevo; //el array de los nuevos solo lo tiene el main 
	}

	var cliente1 = new cliente(myJSON.nombre, myJSON.id, myJSON.direccion, myJSON.estado, myJSON.intervalo, myJSON.nuevo);

	//save nos permite actualizar un record de la base de dato si un cliente ya està presente, insertar un nuevo si no està. a nosotros sirve crear nuevo, modificar el estado desde conectado hasta desconectado, o hasta conectado sin trabajo entonces puedo utilizar solo save

if (cliente1.nuevo == "si"){
	db.clientes.save(cliente1, function(err, guardaCliente){
	if (err || !guardaCliente) console.log("Cliente "+cliente1.nombre+" no guardado en la base de dato. Error: "+err);
	else console.log("Cliente "+guardaCliente.nombre+" guardado");
	});//del save
}else{ //no es nuevo entonces actualizo el estado

	
	if (cliente1.estado == "activo"){
		db.clientes.update(cliente1.nombre, {$set: {estado: "activo", nuevo: "no"}}, function(err) {
			if (err) console.log("error en la actualizacion del cliente: "+cliente1.nombre);
			else console.log("actualizacion completada del cliente que vuelve activo: "+cliente1.nombre);
		});	
	}else if (cliente1.estado == "desconectado"){
		//lo mantengo en la base y cambio el estado en desconectado 
		db.clientes.update(cliente1.nombre, {$set: {estado: "desconectado", nuevo: "no"}}, function(err) {
			if (err) console.log("error en la actualizacion del cliente desconectado: "+cliente1.nombre);
			else console.log("actualizacion completada del cliente desconectado: "+cliente1.nombre);
			});
	}else if (cliente1.estado == "sintrabajo"){
		//lo mantengo en la base y cambio el estado en sin trabajo
		db.clientes.update(cliente1.nombre, {$set: {estado: "sintrabajo", nuevo: "no"}}, function(err) {
			if (err) console.log("error en la actualizacion del cliente: "+cliente1.nombre);
				else console.log("actualizacion completada del cliente: "+cliente1.nombre);
			});		
		}//del else sintrabajo		
}//del else

	

return 0;
}


exports.gestion = gestion;
